#include "sweTiming.hpp"
#include "timing.hpp"
#include "sweSolver.hpp"

namespace hms
{


template<typename MeshType>
void printExecTimings( const SWESolver<MeshType>& solver){
	printTimings<LoopStep>(
		solver.execTimings(), "Sum of execution times logged by solver",
		{{
			{},
			{},
			"updating source terms",
			"fluxes (including slope)",
			"mass sources " + ( solver.settings().useFriction ?
				std::string{ "(including friction)" } :
				std::string{ "(friction disabled)" } ),
			{},
			"new state",
			"time step calculation",
			"updating boundary",
			"other"
		}}
	);
}

#define INSTANTIATE_FOR_ALL_MESHTYPES(MeshType) \
template void printExecTimings( const SWESolver<MeshType>& );
#include "meshInstantiator.hpp"

} // namespace hms